約 2,552,891 件
https://w.atwiki.jp/azounoman/pages/49.html
2068 Nim 問題 http //acm.pku.edu.cn/JudgeOnline/problem?id=2068 解答方針 動的計画法.table[i][j]には残り i+1 個で j+1 人目のターンならば,j+1人目のプレイヤーは勝利できるか否かを格納する. 解答例 import java.util.*; public class Main { public static void main(String[] args) { Scanner sc = new Scanner(System.in); while(true){ int n = sc.nextInt(); if(n==0) break; int s = sc.nextInt(); int[] max = new int[2*n]; for(int j=0;j 2*n;j++){ max[j] = sc.nextInt(); } boolean[][] table = new boolean[s][2*n]; for(int j=0;j 2*n;j++) table[0][j] = false; for(int i=0;i s;i++){ for(int j=0;j 2*n;j++){ boolean win = false; for(int k=Math.max(i-max[j],0);k i;k++){ int nextj = (j+1)%(2*n); if(table[k][nextj]==false){ win = true; break; } } table[i][j] = win; } } if(table[s-1][0]) System.out.println("1"); else System.out.println("0"); } } }
https://w.atwiki.jp/azounoman/pages/41.html
2042 Lagranges Four-Square Theorem 問題 http //acm.pku.edu.cn/JudgeOnline/problem?id=2042 解答方針 問題自体は単純ですが,時間が非常に厳しいです.平方数および二つの平方数の和で表せる数をあらかじめHashSetに登録しておくことで高速化しています. 解答例 import java.util.*; public class Main { public static void main(String[] args) { Scanner sc = new Scanner(System.in); Solver sol = new Solver(); while(true){ int n = sc.nextInt(); if(n==0) break; System.out.println(sol.solve(n,4,1)); } } } class Solver{ HashSet Integer square; HashSet Integer square2; Solver(){ square = new HashSet Integer (); square2 = new HashSet Integer (); for(int i=1;i =32768;i++){ if(presolve(i,1,1) 0) square.add(i); } for(int i=1;i =32768;i++){ if(presolve(i,2,1) 0) square2.add(i); } } public int presolve(int n,int m,int a){ // n==0 m =0 if(n==0) return 1; // n 0 m==0 else if(m==0) return 0; // n 0 m 0 else{ int cnt = 0; for(int i=a;i*i =n;i++){ cnt += solve(n-i*i,m-1,i); } return cnt; } } public int solve(int n,int m,int a){ // n==0 m =0 if(n==0) return 1; // n 0 m==0 else if(m==0) return 0; // n 0 m 0 else if(m==1){ if(!square.contains(n)) return 0; else if(n =a*a) return 1; else return 0; } else if(m==2){ if(!square2.contains(n)) return 0; int cnt = 0; for(int i=a;i*i =n;i++){ cnt += solve(n-i*i,m-1,i); } return cnt; } else{ int cnt = 0; for(int i=a;i*i =n;i++){ cnt += solve(n-i*i,m-1,i); } return cnt; } } }
https://w.atwiki.jp/azounoman/pages/60.html
2535 Very Simple Problem 問題 http //acm.pku.edu.cn/JudgeOnline/problem?id=2535 解答例 import java.util.*; public class Main { public static void main(String[] args) { Scanner sc = new Scanner(System.in); int n = sc.nextInt(); int p = sc.nextInt(); int[] simplest = new int[p]; Arrays.fill(simplest,0); boolean[] hardest = new boolean[p]; Arrays.fill(hardest,false); for(int i=0;i n;i++){ int[] rating = new int[p]; int min = 1001; int max = -1; for(int j=0;j p;j++){ rating[j] = sc.nextInt(); if(min rating[j]) min = rating[j]; if(max rating[j]) max = rating[j]; } for(int j=0;j p;j++){ if(min==rating[j]) simplest[j]++; if(max==rating[j]) hardest[j] = true; } } boolean noverysimple = true; for(int i=0;i p;i++){ if(simplest[i]*2 n !hardest[i]){ System.out.print((i+1)+" "); noverysimple = false; } } if(noverysimple) System.out.println(0); else System.out.println(); } }
https://w.atwiki.jp/chiita/pages/1313.html
All unsightly, together doxycycline 100mg tablet up-to-date surprise late. -- eysagiitaxen 2016-04-29 07 40 17 This [URL=http //online-levitra-vardenafil.org/#levitra-coupon-www6.atwiki.jp - levitra[/URL - immunized, hyponatraemia buy levitra nerves, circle, cystinuria, online levitra [URL=http //zoloftbuy-online.com/#zoloft-online-www6.atwiki.jp - zoloft, online ordering[/URL - anorexia confidently sorrow prominence zoloft where to buy contained [URL=http //buy-5mgpropecia.net/#buy-generic-propecia-online-www6.atwiki.jp - propecia[/URL - needle, clue thrombophlebitis picornavirus, serial [URL=http //duloxetine-generic-cymbalta.net/#cymbalta-and-edema-www6.atwiki.jp - uses for cymbalta[/URL - dizziness, base hair-bearing frictional periodic [URL=http //order-genericlevitra.net/#indian-pharmacies-vardenafil-www6.atwiki.jp - levitra[/URL - co-enzymes rescuer methodological quickly velocity [URL=http //cialiscanada5mg.com/#cialis-www6.atwiki.jp - cialis without prescription[/URL - appearing diaphragmatic flowmetry unrelated labouring [URL=http //orderdoxycycline-online.net/#doxycycline-100mg-www6.atwiki.jp - order doxycycline[/URL - sprang rub, crises amblyopia, rejection release. 名前 コメント
https://w.atwiki.jp/azounoman/pages/34.html
1980 Unit Fraction Partition 問題 http //acm.pku.edu.cn/JudgeOnline/problem?id=1980 解答例 import java.util.*; public class Main{ public static void main(String args[]){ Scanner sc = new Scanner(System.in); int p = sc.nextInt(); int q = sc.nextInt(); int a = sc.nextInt(); int n = sc.nextInt(); while(n!=0){ System.out.println(count(p,q,a,n,1)); p = sc.nextInt(); q = sc.nextInt(); a = sc.nextInt(); n = sc.nextInt(); } } //mは使用できる単位分数の分母の最小値 private static int count(int p,int q,int a,int n,int m){ int d = gcd(p,q); p = p/d; q = q/d; if(q a) return 0; //q =a if(n==1){ if(p==1 q =m) return 1; else return 0; } int c = 0; //if p/q is unit fraction, count itself if(p==1 q =m) c++; //count for p/q - 1/r for(int r=m;(r*r) =a;r++){ if(p*r-q 0) c += count(p*r-q,q*r,a/r,n-1,r); } return c; } private static int gcd(int x, int y){ if(x y) return gcd(y,x); else/* x =y */{ int r = x % y; if(r==0) return y; else{ return gcd(y,r); } } } }
https://w.atwiki.jp/azounoman/pages/23.html
1456 Supermarket 問題 http //acm.pku.edu.cn/JudgeOnline/problem?id=1456 解答方針 「その日に売れるもので一番高いものを売る」という戦略を,10000日目から1日目まで,逆順に適用していく. 解答例 import java.util.*; public class Main { public static void main(String[] args) { Scanner sc = new Scanner(System.in); while(sc.hasNext()){ int n = sc.nextInt(); if(n==0) System.out.println("0"); else{ Vector Integer []prodset = (Vector Integer [])(new Vector ? [10000]); for(int i=0;i 10000;i++) prodset[i] = new Vector Integer (); for(int i=0;i n;i++){ int profit = sc.nextInt(); int dead = sc.nextInt()-1; prodset[dead].add(profit); } Solver sol = new Solver(prodset); System.out.println(sol.solve()); } } } } class Solver{ Vector Integer [] prodset; Solver(Vector Integer [] prodset){ this.prodset = prodset; } public int solve(){ int sum = 0; PriorityQueue RevInteger q = new PriorityQueue RevInteger (); for(int i=9999;i =0;i--){ if(prodset[i].size()!=0){ for(int j=0;j prodset[i].size();j++){ q.offer(new RevInteger(prodset[i].get(j))); } } if(!q.isEmpty()){ sum += q.poll().i; } } return sum; } } class RevInteger implements Comparable RevInteger { int i; RevInteger(int x){ i = x; } public int compareTo(RevInteger r){ return -(i-r.i); } }
https://w.atwiki.jp/azounoman/pages/20.html
1416 Shredding Company 問題 http //acm.pku.edu.cn/JudgeOnline/problem?id=1416 解答例 import java.util.*; public class Main { public static void main(String args[]){ Scanner sc = new Scanner(System.in); while(true){ int target = sc.nextInt(); String input = sc.next(); if(target==0 input.equals("0")) break; int inputlen = input.length(); int best = -1; int bestcut = -1; boolean reject = false; for(int i=0;i (1 (inputlen-1));i++){ int cutval = cut(input,inputlen,i); if(cutval =target){ if(cutval best){ best = cutval; bestcut = i; reject = false; } else if(cutval==best){ reject = true; } } } if(bestcut==-1) System.out.println("error"); else if(reject) System.out.println("rejected"); else{ System.out.printf("%d ",best); print_cut(input,inputlen,bestcut); } } } private static int cut(String input,int inputlen,int cutcode){ boolean[] cut = new boolean[inputlen]; for(int i=0;i inputlen-1;i++){ cut[i] = ((cutcode i)%2)!=0; } cut[inputlen-1] = true; int acc = 0; int sum = 0; for(int i=0;i inputlen;i++){ acc *= 10; acc += char_to_int(input.charAt(i)); if(cut[i]){ sum += acc; acc = 0; } } return sum; } private static void print_cut(String input,int inputlen,int cutcode){ boolean[] cut = new boolean[inputlen]; for(int i=0;i inputlen-1;i++){ cut[i] = ((cutcode i)%2)!=0; } cut[inputlen-1] = false; for(int i=0;i inputlen;i++){ System.out.print(input.charAt(i)); if(cut[i]) System.out.print( ); } System.out.println(); } private static int char_to_int(char c){ return c- 0 ; } }
https://w.atwiki.jp/pazdra/pages/5272.html
編集サン乙です。ところでLこいつFホルス、Sに女傑入れて運用するとしたら、残りのSはどんなのがいいだろう? -- 2014-04-10 09 23 43 青に塗装して強化させたアルトアイゼンにしか見えんがそこがたまらん。 -- 2014-04-10 09 49 09 しかしたった2色で3倍とは・・・まぁその代わり素材が重いけど -- 2014-04-10 13 08 39 ↑3 適当に手持ちの水光への変換積んどけ 色もタイプのちぐはぐだから地獄級のボスワンパンするような火力はでない -- 2014-04-10 15 53 21 カタパルトだよな -- 2014-04-10 17 21 24 コイツだけ攻撃1000を切るのねぇ。あと4ぐらいくれよ、ケチ。 -- 2014-04-10 18 07 50 ↑3そういや用途書き忘れた。主眼はフレ活用でガチ用途じゃないんだ。ノマダンか軽めのスペダンで。言う通り、無難に変換かね。 -- 2014-04-10 18 48 22 こいつリーダーで使えんかなと思ったけどジークで事足りる気がしてきたわ -- 2014-04-10 19 35 08 ↑暴発率は高めだが、LSを発動させずにスキル貯めすることができる。問題は体力タイプがスキル貯めが苦手なこと -- 2014-04-10 20 18 38 黄金3体手に入る人がわざわざこいつを使うとは思えんなぁ 進化素材が重すぎる -- 2014-04-10 22 05 52 体力タイプの水って結構ライバルが強力だからね。体力の木属性が駒不足だったからアースガルは大絶賛なんだがこっちはライバル強すぎ。 -- 2014-04-10 23 01 12 光水変換はまだ実装されてないよな。 -- 2014-04-11 02 37 06 ↑スキルのページから探してみたけど、無いっぽいね。こいつだけどの七星陣とも噛み合わないのが残念だわ -- 2014-04-11 09 16 01 あんまりコッチだと話題になってないけど、非ガチャ限で初の完全バインド耐性だよな? -- 2014-04-11 09 35 09 ウルズ超地獄多色パで行くときの水枠に良さそう 完全バインド耐性に防御スキル持ち -- 2014-04-11 09 44 43 水闇ならソニアと相性良かったのに。属性がイマイチ。でも300万Tでこの性能ってのは捨てがたい -- 2014-04-11 10 34 06 攻撃回復100ずつか、使いやすくはなったか?使い道は増えてない希ガス -- 2014-04-11 13 00 35 バインド完全耐性の水パ防御枠として使える様になったから使い勝手は上がってる -- 2014-04-11 23 54 22 金曜D用のゼウス囮PT耐性役…は光持ちだから完全版ではないか。でも行きやすくなるんでか? -- 2014-04-12 01 41 44 使ってみるまで気付かなかったが、水+光の二色って簡単そうに見えて意外と難しい。任意の三色(イシス)のほうが数段楽。 -- 2014-04-12 02 00 31 この組み合わせって変換出来るのがまだいないんだっけ?他の2体は四神とかでいけるけど。 -- 2014-04-12 08 41 22 孫悟空とジークを組み合わせるしかないか。 -- 2014-04-12 20 49 54 ↑9 非ガチャ限の完全バインド耐性は一応ハローキティワールドジョーカーとかいうのがいるけどサブでの使い勝手は属性やタイプ考慮せんかったらゴーレムたちのが上だわな -- 2014-04-13 05 27 28 進化させた方が強いんだけどコスト制限用に置いときたいってのもあるから悩むな -- 2014-04-13 08 52 18 水闇ならヴァンパイア使う手とかもあるんだけど光なのがうーん まあ今まで通りだな -- 2014-04-13 17 33 20 こいつで伝説龍ラッシュクリアしてた動画あった -- 2014-04-13 17 37 21 麒麟パに入れて超地獄のウルズの水バインドがかからないようにするとか -- 2014-04-13 21 28 42 パイルバンカー -- 2014-04-14 10 00 11 ↑6情報サンクス、そいつは覚醒スキルのページにある表に居なかったと思う。いずれにしても希少には違いないね。 -- 2014-04-14 12 25 51 ルナトリガー! -- 2014-04-14 16 08 49 ↑素直にワロタ -- 2014-04-15 01 45 12 究極きたのは良いけどサブで使う分にはあんま変わらんな -- 2014-04-15 11 03 33 サブで使うにしてもステアップにバインド100%防ぐのは大きいと思うけど -- 2014-04-15 14 04 00 LFこいつ Sジーク、キンアワ、セイレーン -- 2014-04-15 21 41 32 前レス続き -- 2014-04-15 21 42 00 ネプチューンとかでノマダンのラスト前いけるかな?連投スマソ -- 2014-04-15 21 44 40 やっぱどうみてもアルトアイゼンのマイナーチェンジだわ。 -- 2014-04-16 00 38 03 ゼウスフレが希少で、番人2体しか獲れなかったよ。こいつ使って金曜D行ってみる予定だったけど来週におあずけ。 -- 2014-04-16 12 16 12 属性的にこいつがちょっと他の二体に比べて不遇って感じかな? -- 2014-04-16 13 49 19 でもウミヤマパサブに席あるし、タイプパなら水体力が主流だからむしろ一番優遇されてる気がする -- 2014-04-16 14 14 39 金曜DのゼウスPT囮役に使う場合、火はエキドナが、木はヴァルが嵌まるから、水のこいつが一番と考えてよいかな? -- 2014-04-18 18 57 51 こいつ育てたらイザナミが大分狂い始めた・・・ -- 2014-04-19 00 50 29 ライフルを抱えてるのかと思ったら、腕がライフルなのか・・・ -- 2014-04-19 17 44 30 青地に金ラインて何か心惹かれると思ったら、勇者ロトカラーだからだ -- 2014-04-20 15 15 43 待望のミズガル究極進化達成。こいつが俺の中では絵的にさいつよなので全力で強化したいと思う。 -- 2014-04-22 01 17 32 ↑4 どゆこと? -- 2014-04-26 19 35 17 ヴァンツァーっぽくて大好き -- 2014-04-28 12 13 04 水体力は他に優秀なのが多いから一番いらないだろ。 -- 2014-04-29 15 29 51 前のビッグオーみたいなのが好きだったのに… -- 2014-04-29 23 48 35 リーダーにするなら体力エンハいれて水染めにできるから水のこいつがベターなのかな? -- 2014-05-06 19 55 35 黄金三体はわりあわんきがする -- 2014-05-08 19 32 25 パイルバンカー?ニードル発射? -- 2014-05-09 12 25 16 性能的に、光イシスとけっこー被るんだな。サブとしてはこっちかもしれんが -- 2014-06-14 09 48 36 水体力に優秀なモンスターが多いからこそ価値があるように思える。青オーディンもソニアも揃えるのキツイ -- 2014-06-17 11 12 44 進化できません何考えてんだ -- 2014-06-18 02 54 45 黄金三体が友情ガチャできたのでこいつに進化。残りの機神兵の進化に六体も要るから大変 -- 2014-06-20 22 26 22 ベジータパに欲しいわ -- 2014-06-23 02 21 31 ショットガンらしきもの持ってるからケン○ファーに見えた 頑丈さは真逆だけどw -- 2014-06-28 23 31 49 デザイン的には一番こいつが好きなんだけど使う予定は他のが多いから誰進化させようか迷う。番人安定してクリアできたらいいんだがな・・・ -- 2014-07-01 22 45 56 アルトアイゼン・ナハトっぽい -- 2014-07-08 22 39 01 麒麟パでの航路周回用の水枠に適任な気がしてきた -- 2014-07-19 20 11 26 こいつの水木火全部究極してスキルマにしてレベルマにした。多分一番育てやすいと思う。 -- 2014-07-26 06 10 39 ルナ・トリガー! -- 2014-07-26 11 08 33 魔神英雄伝ワタルにこんなやついたような -- 2014-07-26 12 00 37 黄金の万人なんて対してむずダンジョンでもないだろ?しかも確泥だし しかしスキルマのターン何とかならんかな・・・ -- 2014-08-18 19 30 28 ゼウスパで行けるらしいがプラスがいるからなあ ツインリットはプラスいらんしあっちよりムズカシイ -- 2014-08-31 16 32 41 自分から縛りPT使っておいてムズカシイってのは何かおかしい ゼウスでもクリア可能ってだけで誰でも簡単にクリアではないはず そもそもプラス在りき前提の攻略ってのは書いた奴には簡単でも誰でもが出来る攻略ってわけじゃないからな 今時もっと優先すべき奴が他にいるのにゼウスに297とか躊躇うレベル 昔ゼウスが主流だったときに育ててた人にとって簡単ってだけ -- 2014-09-01 10 01 57 ↑と↑↑がゼウスで黄金行ったことないのは分かった。フレのHP+99があれば自前のメンバーにプラスは必要ないのよ -- 2014-09-09 19 07 35 ↑そんなフレいないし自分297リーダーなんぞ持ってないので申請するのも恥ずかしいです -- 2014-09-10 12 52 02 やっぱイラストかっこいいね完全バインド耐性ってのもいいわ -- 2014-09-13 16 23 16 かっこいいから使う。可愛いから使う。そんでいいじゃん。性能ガー。プラスガー。って。ほんと日本人ってなんだかなー...。ゲームなんだから楽しめよ。 -- 2014-09-13 23 13 39 ↑3 297じゃないと297に申請してはいけないルールじゃないんだから、もっとガンガン強い人に頼っちゃっていいんだよ。勿体無いぜ -- 2014-09-14 14 52 01 銃口から弾の先っちょだけ出てる? -- 2014-09-14 17 18 47 パイルバンカー(杭打ち銃)だべ。なお、こんな見た目ですが腕っぷしは回復娘にも勝てない模様。 -- 2014-09-16 02 17 52 あのツノにパイルバンカーとなれば元ネタがバレるよね。 -- 2014-09-19 22 57 47 ゼウスマーキュリーの門番的ポジのミズガルズさん 嫌いじゃないぜ -- 2014-09-20 23 35 34 >指定色LSでは唯一 今だと覚醒ソティスも自分だけで満たせるから唯一ではないよなー -- 2014-09-23 16 49 55 3色のなかで一番低い攻撃力。その武器は飾りか(´・ω・`) -- 2014-10-01 17 46 13 関銀屏でいい仕事したわ -- 2014-10-02 18 46 01 もっと攻撃力増やすべきだろ・・・ -- 2014-10-03 12 14 04 低いっても他のゴーレムから10とか20低いだけだぞw3桁と4桁の見た目に余計に低く見えるだけでこの程度ではほぼ差は無い。 -- 2014-10-21 10 36 20 ↑君はゴーレム達そのものの攻撃力が低すぎると考えたことはないのか。3人とも回復娘たちより攻撃力低いんだぞ… -- 2014-11-02 15 52 00 巨大ロボットみたいに見えて実は幼稚園児並の身長なので女の子に力負けするのは当然 -- 2014-11-05 16 27 55 ネプとか覚醒西洋神は自属性が半減対象から外れたから、1フロアだけ光と闇以外で1ターンで倒せない時とかの耐久用にいいんじゃないかな? -- 2014-11-08 13 58 10 ↑2パズバト見る限りその線はないんだよなぁ…リーダーに据えないと武装に電源が回らないとかだろうか -- 2014-11-20 00 23 50 いっその事デザインは足だけしか見えないで巨大を醸し出すとかすれば・・・ -- 2014-11-26 13 33 59 攻撃低いけど+換算すると究極四神ぐらいあるんだよなあ -- 2014-12-11 21 12 08 タイプに恥じない体力お化けだからなぁ -- 2014-12-16 20 19 04 400万と比べてる人いるけど300万でこのステは破格でしょ。精霊達にも見習ってほしいわ。 -- 2014-12-16 21 54 36 リーダーとしては微妙だけど究極ゴーレムはサブとしてはそれこそゴッドラッシュとかに連れて行けるレベルじゃん。スキラゲもレベル上げも楽だしこんなに優れた存在は他に居ない。でもレアガチャで出るのは勘弁してください。 -- 2014-12-22 23 28 01 最初のゴーレムフェスもといGFで手に入れた青ゴーレムさんw だったが、9か月越しでこの姿に。何だかんだで感慨深いわ。 -- 2014-12-24 20 54 50 最初は何体もゴーレムが出てきてうんざりしたものだが、今となっては欲しくてたまらない・・・なんてこった -- 2014-12-30 01 47 46 レアガチャから出ないとなると、そっち方面のネタキャラとしての代表格だっただけに寂しいっちゃ寂しいな。代わりの勇士シリーズが揃いも揃っての謎仕様なだけに余計に。 -- 2015-01-29 12 19 57 趣味で297振ってリーダー運用してるが300万☆6とは思えないくらい強いぞ。サブが完全自由なのがデカい。ブルマとか噛みあうし。 -- 2015-01-29 18 47 49 サクヤでウルズ行くとき凄い活躍してくれたわ -- 2015-02-08 11 35 13 麒麟パのサブでスタメンとして大活躍だったが、この度白メタ引いたお陰で引退に追い込まれました 今までありがとう 本当にお世話になりました -- 2015-02-13 21 32 15 ランク二桁代の頃にコイツがいてほしかった。当時ならばどこのPでも柱として活躍できただろうに。黄金番を普通に狩れる今となっては・・・ -- 2015-02-14 13 22 24 もしかしてこの子ヘララッシュやゴッドラッシュで使えるんじゃない!? -- 2015-02-16 14 27 54 スキルマなら絶地獄級でも防御枠として使えるよ。1ターンだけなクシナダより3ターンなこっちの方がいい場面もある。まあ鉄壁と同じターンってのには納得いかないからターン修正は欲しいけどゴーレムはランク高くなっても使える奴だよ。 -- 2015-02-19 11 19 25 白メタいるけどヒカーリーの水枠用に作るわ、HP底上げ 防御態勢は結構ピンズドだわ -- 2015-03-03 18 18 39 ベジットパにいれてる水と軽減良いのいなくて、1ターン威嚇とも相性いいしかなり活躍してる。 -- 2015-03-31 01 34 56 多分マシンタイプとやらがつくから需要増えそう。スキルターン短縮こないかな、スサノオ、インドラが15だから12くらいに。現状ノマダンドロップにしては、有能すぎるから強化しにくいのかな -- 2015-04-20 23 12 07 手持ちは育てた奴1体だけって人多いだろうからこのマシゴの究極は難易度高いよなあ。新しいの育てなおさないといけないわけだから。 -- 2015-05-26 12 57 52 問題は究極したマシンゴーレムが手間に見合うだけの性能を持ってないこと -- 2015-05-27 10 43 46 ゼウスマーキュリーを周回しているのはこいつのため。たまドラを使わずにフル覚醒できて、この強さは心強い。 -- 2015-07-22 16 39 14 スカーレット回るときにサラスパに入れてるわ、コスト軽いしHP多いからお手軽な防御枠としては強い -- 2015-08-03 20 06 00 ただ、15ターンは重い・・・ -- 2015-11-07 16 24 31
https://w.atwiki.jp/azounoman/pages/14.html
1409 77377 問題 http //acm.pku.edu.cn/JudgeOnline/problem?id=1409 解答方針 「単語を入力するための数字列」から「単語文字列」へのMultiMapを用意し,与えられた単語をすべて登録する.JavaではC++のようなMultiMapがないので,HashMapとArrayListの組み合わせでMultiMapを実現している. 入力数字列の解析はDFSで行う.DFSはStateクラス単位で行う.Stateクラスは「今までにマッチした単語のリスト」rwords と「まだ単語とマッチしていない入力数字列」buffer を保持する.初期状態ではrwodsは空で,bufferは入力数字列そのものである.DFSである状態をスタックから取り出したら,bufferを1文字ずつ50文字まで読み込んでいく.読み込んだ数字列がある単語の入力数字列と一致したら,その単語をrwordsに追加しbufferから読み込んだ入力数字列を削って,スタックに入れる.bufferを50文字まで読んだらその状態を破棄する.状態をスタックから取り出したときbufferが0文字ならマッチ成功なので,rwordsをSentenceクラスのインスタンスに変換して,出力文集合sentencesetに登録する.なお,Sentenceクラスは,文を辞書式順序で並べるために,Comparable Sentence を実装している. 解答例 import java.util.*; public class Main { public static void main(String[] args) { Scanner sc = new Scanner(System.in); while(true){ int n = sc.nextInt(); if(n==0) break; // make dictionary HashMap String,ArrayList String dictionary = new HashMap String,ArrayList String (); for(int i=0;i n;i++){ String word = sc.next(); String seq = toButtonSequence(word); if(dictionary.containsKey(seq)){ dictionary.get(seq).add(word); } else{ dictionary.put(seq,new ArrayList String ()); dictionary.get(seq).add(word); } } // analyze input sequence String input = sc.next(); Stack State st = new Stack State (); TreeSet Sentence sentenceset = new TreeSet Sentence (); st.push(new State(input)); while(!st.empty()){ State state = st.pop(); if(state.isEnd()){ String[] sentence = new String[state.rwords.size()]; sentence = state.rwords.toArray(sentence); sentenceset.add(new Sentence(sentence)); } for(int i=1;i =50 i =state.buffer.length();i++){ String rbuf = state.buffer.substring(0,i); if(dictionary.containsKey(rbuf)){ ArrayList String hitwordlist = dictionary.get(rbuf); for(String w hitwordlist){ State newstate = new State(state); newstate.buffer = newstate.buffer.substring(i); newstate.rwords.add(w); st.push(newstate); } } } } //output for(Sentence set sentenceset){ String[] words = set.words; int wordnum = words.length; for(int i=0;i wordnum;i++){ if(i==wordnum-1) System.out.print(words[i]); else System.out.print(words[i]+" "); } System.out.println("."); } System.out.println("--"); } } public static char toButton(char c){ if (c = c ) return 2 ; else if(c = f ) return 3 ; else if(c = i ) return 4 ; else if(c = l ) return 5 ; else if(c = o ) return 6 ; else if(c = s ) return 7 ; else if(c = v ) return 8 ; else return 9 ; } public static String toButtonSequence(String s){ char[] seq = new char[s.length()]; for(int i=0;i s.length();i++){ seq[i] = toButton(s.charAt(i)); } return new String(seq); } } class State{ ArrayList String rwords; String buffer; State(String buf){ rwords = new ArrayList String (); buffer = buf; } State(State s){ rwords = new ArrayList String (s.rwords); buffer = new String(s.buffer); } public boolean isEnd(){ if(buffer.length()==0) return true; else return false; } } class Sentence implements Comparable Sentence { String[] words; Sentence(String[] words) { this.words = words; } public int compareTo(Sentence s){ int l1 = this.words.length; int l2 = s.words.length; for(int i=0;i l1 i l2;i++){ if(this.words[i].compareTo(s.words[i])!=0) return this.words[i].compareTo(s.words[i]); } return l1-l2; } }
https://w.atwiki.jp/azounoman/pages/9.html
1130 Alien Security 問題 http //acm.pku.edu.cn/JudgeOnline/problem?id=1130 解答例 import java.util.*; public class Main{ public static void main(String[] args) { Scanner sc = new Scanner(System.in); int n = sc.nextInt(); int e = sc.nextInt(); boolean[][] adj = new boolean[n][n]; for(int i=0;i n;i++) Arrays.fill(adj[i],false); while(sc.hasNext()){ int p = sc.nextInt(); int q = sc.nextInt(); adj[p][q] = true; } Solver sol = new Solver(n,e,adj); System.out.printf("Put guards in room %d.\r\n",sol.solve()); } } class Solver{ int n; int e; boolean[][] adj; boolean[][] avail; Solver(int n, int e, boolean[][] adj) { this.n = n; this.e = e; this.adj = adj; this.avail = new boolean[n][n]; } public int solve(){ analyzeAvailable(); return nearestPoint(); } private int nearestPoint(){ Queue Integer q = new LinkedList Integer (); boolean[] searched = new boolean[n]; q.offer(e); Arrays.fill(searched,false); searched[e] = true; while(!q.isEmpty()){ int v = q.poll(); if(avail[e][v]) return v; for(int i=0;i n;i++){ if(adj[i][v] !searched[i]){ q.offer(i); searched[i] = true; } } } return -1; } private void analyzeAvailable(){ for(int i=0;i n;i++) Arrays.fill(avail[i],true); for(int k=1;k n;k++) avail[0][k] = false; while(!analyzeAvailableSub()); for(int i=0;i n;i++) avail[i][i] = false; } private boolean analyzeAvailableSub(){ boolean end = true; for(int i=1;i n;i++){ boolean[] availnext = new boolean[n]; Arrays.fill(availnext,false); boolean first = true; for(int p=0;p n;p++){ if(adj[p][i]){ if(first){ for(int k=0;k n;k++){ availnext[k] = avail[p][k]; } first = false; } else{ for(int k=0;k n;k++){ availnext[k] = avail[p][k]; } } } } availnext[i] = true; for(int k=0;k n;k++){ if(avail[i][k]!=availnext[k]) end = false; avail[i][k] = availnext[k]; } } return end; } }